#include <stdlib.h>
#include <stdio.h>
#include "element.h"
#include "TableauDynamique.h"

void initialiser(Tab_Dynamique * t)
{
	t->capacite=1;
	t->ad=(Elem*)malloc(sizeof(Elem));
	t->derniere_position=0;
}

void testament (Tab_Dynamique * t)
{
	if (t->.ad != 0)
	{
		free(t->ad);
		t->ad=0;
		t->capacite=0;
		t->derniere_position=0;
	}
}


void ajouteElement(Tab_Dynamique *t, Elem e)
{
	int i;
	if( t->capacite == t->derniere_position )
	{
		Elem * temp=t->ad;
		t->ad=(Elem*)malloc((t->capacite*2)*(sizeof(Elem)));
		for( i=0 ; i < t->capacite ; i++)
		{
			t->ad[i]=temp[i];
		}
		t->capacite=t->capacite*2;
		free(temp);
	}
	t->ad[t->derniere_position]=e;
	t->derniere_position++;
}


Elem valeurIemeElementTabDyn(const Tab_Dynamique *t, unsigned int i)
{
	return t->ad[i];
}

void afficheTabDyn(const Tab_Dynamique *t)
{
	int i;
	for(i=0 ; i < t->derniere_position ; i++)
	{
		afficheElement(t->ad[i]);
	}
}

void supprimeDernierElementTabDyn( Tab_Dynamique *t)
{
	t->ad[t->derniere_position-1]=0;
	t->derniere_position=t->derniere_position-1;
}

void modifieValeurIemeElementTabDyn(Tab_Dynamique *t, Elem e, unsigned int i)
{
	t->ad[i]=e;
}

int rechercheElementTabDyn(const Tab_Dynamique *t, Elem e)
{
	int i;
	for (i=0 ; i < t->derniere_position ; i++)
	{
		if( t->ad[i] == e )
		{
			return i;
		}
	}
	return -1;
}

